package com.ajmd.onlineexam.controller;

import com.ajmd.onlineexam.baseUtil.CommonResult;
import com.ajmd.onlineexam.enumeration.AppExceptionCodeEnum;
import com.ajmd.onlineexam.enumeration.StaticFinalValue;
import io.swagger.annotations.Api;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.util.unit.DataSize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import springfox.documentation.oas.annotations.EnableOpenApi;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.UUID;
//
///**
// * @author ajmd
// * @since 2023/3/20 11:00
// */
////@PropertySource("classpath:application.yml")
@RestController
public class TestController {
////    // 图片保存的根路径（从 application.yml 中读取）
////    @Value("${file.rootPath}")
////    private String rootPath;
////
////    // 允许上传的最大文件大小（从 application.yml 中读取）
////    @Value("${file.maxSizeStr}")
////    private String maxSizeStr;
//
//    // 将字符串类型转换为long类型
//    long maxSize = Long.parseLong(maxSizeStr.replace("MB", "")) * 1024 * 1024;
//
//
//    @PostMapping(value = "/uploadImage")
//    public void uploadImage(@RequestParam("file") MultipartFile file,
//                            HttpServletRequest request,
//                            HttpServletResponse response) throws IOException {
//        // 检查文件是否为空
//        if (file.isEmpty()) {
//            response.getWriter().write("请选择要上传的文件");
//            return;
//        }
//
//        // 检查文件大小是否超过限制
//        if (file.getSize() > maxSize) {
//            response.getWriter().write("文件大小不能超过 " + FileUtils.byteCountToDisplaySize(maxSize));
//            return;
//        }
//
//        // 获取文件扩展名
//        String extension = FilenameUtils.getExtension(file.getOriginalFilename());
//        if (StringUtils.isBlank(extension)) {
//            extension = "jpg";
//        }
//
//        // 根据日期创建文件夹
//        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
//        String dateStr = dateFormat.format(new Date());
//        File uploadDir = new File(rootPath, dateStr);
//        if (!uploadDir.exists()) {
//            uploadDir.mkdirs();
//        }
//
//        // 生成文件名
//        String filename = UUID.randomUUID().toString() + "." + extension;
//        File destFile = new File(uploadDir, filename);
//
//        // 保存上传的文件
//        file.transferTo(destFile);
//
//        // 返回文件 URL
//        String fileUrl = request.getContextPath() + "/" + dateStr + "/" + filename;
//        response.getWriter().write(fileUrl);
//    }


    @PostMapping("/uploadTest")
    public CommonResult testUpload(@RequestParam("file") MultipartFile file){
        // 检查文件大小是否超过限制
        long maxSize = DataSize.parse(StaticFinalValue.UPLOAD_IMG_MAX_SIZE).toBytes();
        if (file.getSize() > maxSize) {
            return CommonResult.error(AppExceptionCodeEnum.IMG_UPLOAD_ERROR)
                    .appendMessage("文件大小不能超过" + FileUtils.byteCountToDisplaySize(maxSize));
        }

        return CommonResult.ok().data("isEmpty",ObjectUtils.isEmpty(file));
    }
}
